// 字符串类型 string
let myName = "Dcsgo"

// 数值类型 number 可以表示整数和浮点数
let weight = 60.5

// 布尔类型 boolean 
let button = true
button = false

// 对象 object 可以通过键值对的方式存储多个值
let boy = {
    name: "Tom",
    age: 20,
    weight: 70.1
}
console.log("boy:", boy)
// boy: { name: 'Tom', age: 20, weight: 70.1 }

// map 用于存储键值对的有序集合
let girl = new Map([
    ["name", "Jane"],
    ["age", 21],
    ["weight", 65.5]
])
console.log("girl:", girl)
// girl: Map(3) { 'name' => 'Jane', 'age' => 21, 'weight' => 65.5 }

// Map相对于对象提供了更灵活、有序、高效的键值对存储和操作方式
// 当需要在大量键值对中快速查找或删除特定键值对时, Map比对象更高效
// Map提供了一些便捷的方法来操作键值对, 如: get()、set()、delete()
// Map提供了一些便捷的迭代方法, 如: forEach()、keys()、values()、entries()

// set 用于存储无序且唯一的值的集合
let numbers = new Set([1, 2, 3, 4, 4, 4])
console.log("numbers:", numbers)
// numbers: Set(4) { 1, 2, 3, 4 }

// array 数组 有序集合，可以包含不同类型的元素，并且数组的长度是可以变的
let str = ["hello", "world"]
console.log("str:", str)
// str: [ 'hello', 'world' ]
let arr = ["hello", 3.14, { name: "Dcsgo" }]
console.log("arr:", arr)
// arr: [ 'hello', 3.14, { name: 'Dcsgo' } ]

// function 函数
function add(a, b) {
    return a + b;
}
console.log("add(2,3):", add(2, 3))

// class 类
class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    info() {
        console.log("姓名:", this.name, "年龄:", this.age);
    }
}

const person = new Person("Dcsgo", 20);
person.info()
// 姓名: Dcsgo 年龄: 20